﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace TraitorAmongUs.States {
	public interface GameState {
		/// <summary>
		/// The event that is fired when the state is entered
		/// </summary>
		/// <param name="e">The Engine object</param>
		/// <param name="param">Any parameters that need to be passed</param>
		void EnterState(Engine e, dynamic param);

		/// <summary>
		/// The event that is fired when the state is exited
		/// </summary>
		void LeaveState();

		/// <summary>
		/// The main logic method of the state
		/// </summary>
		/// <param name="gameTime">The current elapsed time</param>
		void Update(GameTime gameTime);

		/// <summary>
		/// The main rendering method of the state
		/// </summary>
		/// <param name="gameTime">The current elapsed time</param>
		void Draw(GameTime gameTime);
	}
}
